rank-2 type
rank-1 typeな関数をfirst class objectとして扱う関数
HaskellではRankNTypes拡張が必要
PureScriptならdefaultで使用できる
例
code:hs
{-# LANGUAGE RankNTypes #-}
foo' :: (forall a. a -> Int) -> Int
runST :: (forall s. ST s a) -> a
f4 :: Int -> (forall a. a -> a)
引数の関数がforallで囲われている